home *** CD-ROM | disk | FTP | other *** search
/ The 640 MEG Shareware Studio 2 / The 640 Meg Shareware Studio CD-ROM Volume II (Data Express)(1993).ISO / dbase / vpi1_330.zip / DEMO.PRG < prev    next >
Text File  |  1991-12-30  |  17KB  |  692 lines

  1. **********************************************************************
  2. *  DEMO.PRG    VP-Info demo program...selfrunning with delay factor
  3. *              escape re-starts
  4. *                  ┌──────────────────┐
  5. *                  │    Version 3.30  │
  6. *                  └──────────────────┘
  7. *  NOTES to USER:                                Tue  12-24-1991  15:28:26
  8. *       subroutines required:   DEMOLOAD.PRG,DEMO2.PRG,DEMODISP.PRG
  9. *       data files required:    DEMOINV.DBF, DEMOCUST.DBF, DEMOTEMP.DBF,
  10. *                                   DEMOGL.DBF and DEMOTRN.DBF
  11. *       index files required:   DEMOGL1.DBF, DEMOTRN1.DBF
  12. *       library file required:  DEMO.LIB             ┌────────────────┐
  13. *       text file required:     DEMO.TXT,NEW.TXT     │ always compile │
  14. *       report form required:   DEMO.FRM             └────────────────┘
  15. *  Always works from menu...self-running selection is timed in seconds
  16. *                           other options ding bell + require key to proceed
  17. * If you want to change text in list of features, edit DEMO.TXT and NEW.TXT
  18. *  \+ means new screen with color change, \\ means same screen + new color
  19. *  fields on \+ line: 4-9 is screen num, 10-19 is offset from column 25
  20. * (C) Copyright 1986-1991 Sub Rosa International Inc.
  21. *  Sid Bursten and Bernie Melman
  22. **********************************************************************
  23. GLOBAL graph
  24. DIM char 50 flash[12]
  25. DIM num d[4],b2[11],menus[4,2],
  26. DIM char texts[2]
  27. DO DEMOLOAD
  28. SET TALK OFF
  29. SCREEN 1,2
  30. menuset=1
  31. SCREEN 1,3
  32. DO WHILE t
  33.    ON error
  34.       SCREEN 1
  35.       WINDOW
  36.       :color=:serial
  37.       COLOR 7 0 0 24 79
  38.       ? 'Execution terminated on error:',:message
  39.       CANCEL
  40.    ENDON
  41.    ON escape
  42.       SCREEN 1
  43.       PERFORM fullerase
  44.       SET function on
  45.       COLOR RED 0 0 24 79
  46.       ERASE
  47.       @ 10,10 say 'Demonstration interrupted . . . '
  48.       @ 12,10 say 'Press <ENTER> key to continue . . . spacebar to quit.'
  49.       RING
  50.       signal=inkey()
  51.       IF signal=13
  52.          CHAIN demo
  53.       ELSE
  54.          ok=close()
  55.          :color=:serial
  56.          WINDOW
  57.          ERASE
  58.          CANCEL
  59.       ENDIF
  60.    ENDON
  61.    delay=4
  62.    delay2=delay
  63.    pause=t
  64.    junk=0
  65.    SCREEN 2
  66.    PERFORM fullerase
  67.    :color=:serial
  68.    COLOR 96 0 0 24 79
  69.    COLOR bold 1 1 23 78
  70.    COLOR ruby 13,7,19,70
  71.    WINDOW 1,1,23,78 blank
  72.    ?
  73.    TEXT .5    ;menu
  74.    SCREEN 2,1
  75.    SCREEN 1
  76. *  SCREEN tear
  77.    CURSOR 15,33*menuset-25
  78.    :color=ruby
  79.    menuchoice=menu(5,30)
  80.    IF menuchoice=0 .or. :key=335 .or. :key=327  ;home or end keys
  81.       SET function on
  82.       COLOR lightblue 0 0 24 79
  83.       :color=:serial
  84.       WINDOW
  85.       CLS
  86.       ok=close()
  87.       CANCEL
  88.    ENDIF
  89.    menuchoice=menuchoice+5*menuset-5
  90.    :color=0
  91.    IF :key=331 .or. :key=333
  92.       menuset=iff(menuset=1,2,1)
  93.       LOOP
  94.    ENDIF
  95.    menuset=1
  96.    DO CASE
  97.    CASE menuchoice=1
  98.       DO WHILE t
  99.          PERFORM features
  100.          IF graphics
  101.             PERFORM graphics
  102.          ENDIF
  103.          PERFORM menus
  104.          PERFORM reports
  105.          PERFORM screens
  106.          PERFORM flash
  107.          repeating=f
  108.          PERFORM dates
  109.          PERFORM speed
  110.       ENDDO
  111.    CASE menuchoice=2 .or. menuchoice=3
  112.       PERFORM features
  113.    CASE menuchoice=4
  114.       PERFORM graphics
  115.    CASE menuchoice=5
  116.       PERFORM menus
  117.    CASE menuchoice=6
  118.       DO DEMODISP
  119.    CASE menuchoice=7
  120.       PERFORM reports
  121.    CASE menuchoice=8
  122.       PERFORM screens
  123.       PERFORM flash
  124.       PERFORM dates
  125.    CASE menuchoice=9
  126.       PERFORM speed
  127.    CASE menuchoice=10
  128.       CHAIN samples
  129.    ENDCASE
  130.    :color=:serial
  131. ENDDO
  132. *
  133. ************************ procedures ****************************
  134. *
  135. PROCEDURE features
  136.    ok=close()
  137.    textfile=iff(menuchoice=3,2,1)
  138.    WINDOW
  139.    IF .not. ropen(texts[textfile])
  140.       ? !(trim(texts[textfile])),'not found'
  141.       CANCEL
  142.    ENDIF
  143.    ii=4
  144.    PERFORM fullerase
  145.    COLOR 96 0 0 24 79
  146.    COLOR white 0 3 24 76
  147.    WINDOW 1,5,23,74 double
  148.    ok=sseek(1)
  149.    DO WHILE read(data)
  150.       DO CASE
  151.       CASE data='\+'
  152.          IF val($(data,4,7))>0
  153.             PERFORM delay2
  154.             DELAY 1
  155.             offset=val($(data,10,10))
  156.             WINDOW 7,26+offset,22,51+offset double
  157.             ii=ii+1
  158.             COLOR b2[mod(ii,10)+1] 6,25+offset,23,52+offset
  159.             scr=val($(data,4,7))
  160.             TEXT .scr
  161.             WINDOW
  162.             PERFORM DELAY
  163.             WINDOW 1,5,23,74 double
  164.          ELSE
  165.             IF .not. (data='\+\' .or. data='\++')    ;top or end of file
  166.                PERFORM DELAY
  167.             ENDIF
  168.          ENDIF
  169.          ii=ii+1
  170.          IF data<>'\++\'                             ;end of file
  171.             COLOR b2[mod(ii,10)+1],0,3,24,76
  172.             ERASE
  173.          ENDIF
  174.          row1=1
  175.       CASE data='\\'
  176.          ?
  177.          PERFORM delay2
  178.          ii=ii+1
  179.          COLOR b2[mod(ii,10)+1],row1,6,row(),73
  180.          row1=row()+1
  181.       OTHERWISE
  182.          :color=b2[mod(ii+4,10)+1]
  183.          ? data
  184.       ENDCASE
  185.    ENDDO
  186.    PERFORM delay
  187.    WINDOW
  188.    :color=0
  189. ENDPROCEDURE features
  190. *
  191. PROCEDURE graphics
  192.    DO DEMO2
  193. ENDPROCEDURE graphics
  194. *
  195. PROCEDURE screens
  196.    SCREEN 2
  197.    PERFORM fullerase
  198.    COLOR white 0 0 24 79
  199.    @ 10,5 say cen('VP-Info gives you complete control of your computer...',70)
  200.    SCREEN 1
  201.    SCREEN 2,1  ;left
  202.    PERFORM delay
  203.    PERFORM fullerase
  204.    WINDOW 3,3,23,75 blank
  205.    COLOR blue 3 3 23 75
  206.    COLOR gold    8 3 13 77
  207.    COLOR yellow 17 3 22 77
  208.    :color=ruby
  209.    @ 2,3 say cen('VP-Info can scroll windows',72)
  210.    PERFORM delay3
  211.    :color=black
  212.    @ 5,3 say cen('Windows can scroll up!',72)
  213.    PERFORM delay2
  214.    @ 24,80
  215.    SELECT 1
  216.    GOTO TOP
  217.    :color=blue
  218.    @ 7,3 say 'CUSTN  NAME                           ADDRESS                    RECORD'
  219.    :color=gold
  220.    WINDOW 8,3,12,73 blank
  221.    REPEAT 5 times vary i
  222.       ? custn,name,add:1,i
  223.       SKIP
  224.       PERFORM delay5
  225.    ENDREPEAT
  226.    REPEAT 5 times
  227.       SCROLL up
  228.       i=i+1
  229.       ?? custn,name,add:1,i
  230.       SKIP
  231.       PERFORM delay5
  232.    ENDREPEAT
  233.    :color=bold
  234.    @ 14,3 say cen('. . . and windows can scroll DOWN!',72)
  235.    PERFORM delay2
  236.    :color=red
  237.    @ 16,3 SAY 'STYLE  COL DESCRIPTION          QUANT    COST  RECORD'
  238.    PERFORM delay3
  239.    SELECT 2
  240.    GOTO TOP
  241.    :color=yellow
  242.    WINDOW 17,3,21,55 blank
  243.    REPEAT 5 times vary i
  244.       ? style,color,descript,quant,cost,i
  245.       SKIP
  246.       PERFORM delay5
  247.    ENDREPEAT
  248.    REPEAT 5 times
  249.       SCROLL down
  250.       i=i+1
  251.       ?? style,color,descript,quant,cost,i
  252.       SKIP
  253.       PERFORM delay5
  254.    ENDREPEAT
  255.    PERFORM delay
  256. ENDPROCEDURE screens
  257. *
  258. PROCEDURE dates
  259.    SCREEN 2
  260.    PERFORM fullerase
  261.    COLOR white 0 0 24 79
  262.    @ 10,5 say cen('VP-Info gives you complete control of dates and time...',70)
  263.    SCREEN 1
  264.    SCREEN 2,1  ;right
  265.    PERFORM delay
  266.    PERFORM FULLERASE
  267.    offset=10
  268.    :color=bold
  269.    @ 2,5 say cen("VP-Info PROVIDES EVERY DATE AND TIME FUNCTION YOU'LL EVER NEED",70)
  270.    PERFORM delay2
  271.    :color=blue
  272.    @ 4,offset+02 say 'Date formats:'
  273.    PERFORM delay2
  274.    :color=blue
  275.    @ ROW(),offset+20 say '1. '+date(1)
  276.    PERFORM delay3
  277.    :color=magenta
  278.    @ ROW()+1,offset+22 say '2. '+date(2)
  279.    PERFORM delay3
  280.    :color=gold
  281.    @ ROW()+1,offset+24 say '3. '+date(3)
  282.    PERFORM delay3
  283.    :color=lightblue
  284.    @ ROW()+1,offset+26 say '4. '+date(4)
  285.    PERFORM delay3
  286.    :color=yellow
  287.    @ ROW()+1,offset+28 say '5. '+date(5)
  288.    PERFORM delay3
  289.    :color=bold
  290.    @ ROW()+1,offset+30 say '6. '+date(6)
  291.    PERFORM delay3
  292.    :color=blue
  293.    @ ROW()+1,offset+32 say '7. '+date(7)
  294.    PERFORM delay3
  295.    :color=red
  296.    @ ROW()+1,offset+34 say '8. '+date(8)
  297.    PERFORM delay3
  298.    :color=white
  299.    @ ROW()+1,offset+36 say '9. '+date(9)
  300.    PERFORM delay2
  301.    offset=5
  302.    :color=ruby
  303.    @ 14,offset+02 say 'Time formats:'
  304.    PERFORM delay2
  305.    :color=gold
  306.    @ 14,offset+20 say '1. '+time(1)
  307.    PERFORM delay3
  308.    :color=blue
  309.    @ 14,offset+35 say '2. '+time(2)
  310.    PERFORM delay3
  311.    :color=yellow
  312.    @ 14,offset+50 say '3. '+time(3)+' seconds'
  313.    :color=black
  314.    PERFORM delay2
  315.    offset=5
  316.    @ 16,offset+10 say 'This date is 30 days from today ........ '+date(6,days( date(1),30))
  317.    PERFORM delay3
  318.    @ 17,offset+10 say 'and this date is 60 days in the past ... '+date(6,days( date(1),-60))
  319.    PERFORM delay3
  320.    @ 19,5 say cen('The number of days to Christmas ...... '+str(days( date(1),thisyr+'1225'),6),70)
  321.    PERFORM delay3
  322.    @ 21,5 say cen('Dates in data files may use any of the date formats',70)
  323.    PERFORM delay2
  324.    COLOR ruby+64,4,4,12,75
  325.    PERFORM delay3
  326.    COLOR bold+64, 14 4 14 75
  327.    PERFORM delay3
  328.    COLOR blue+64 16,4 17,75
  329.    PERFORM delay
  330. ENDPROCEDURE dates
  331. *
  332. PROCEDURE flash
  333.    SCREEN 2
  334.    PERFORM fullerase
  335.    @ 10,5 say cen('VP-Info gives you complete control of colors and grahics...',70)
  336.    SCREEN 1
  337.    SCREEN 2,1  ;up
  338.    PERFORM delay
  339.    PERFORM fullerase
  340.    COLOR white 0 0 24 79
  341.    COLOR bold+64 0 0 24 79
  342.    COLOR ruby+64 00 00 5 79
  343.    COLOR yellow+64 06 00 20 09
  344.    COLOR black+64 06 70 20 79
  345.    COLOR gold+64 20 00 24 79
  346.    BOX 01 01 04 78 double
  347.    BOX 07 01 19 08 double
  348.    BOX 07 71 19 78 double
  349.    BOX 21 01 24 78 double
  350.    :color=133
  351.    BOX 02 02 03 77
  352.    :color=134
  353.    BOX 08 02 18 07
  354.    :color=131
  355.    BOX 08 72 18 77
  356.    :color=132
  357.    BOX 22 02 23 77
  358.    :color=blue
  359.    @ 6,32 say ' VP-Info Features '
  360.    WINDOW 08,11,20,68
  361.    COLOR bold 10 10 14 69
  362.    PERFORM delay2
  363.    REPEAT 10 times varying i
  364.       :color=b2[i]
  365.       ? flash[i]
  366.       PERFORM delay4
  367.    ENDREPEAT
  368.    REPEAT 10 times vary i
  369.       COLOR b2[i]+128 i+09 12 i+09 67
  370.       PERFORM delay3
  371.       COLOR b2[i] i+09 12 i+09 67
  372.    ENDREPEAT
  373.    PERFORM delay
  374. ENDPROCEDURE flash
  375. *
  376. PROCEDURE reports
  377.    firm=cen(:company,45)
  378.    rdate=date(4)
  379.    SCREEN 1,2
  380.    SCREEN 2
  381.    PERFORM fullerase
  382. *********************************introduction, fields keyword only
  383.    :color=blue
  384.    WINDOW 1,1,23,78 double
  385.    TEXT .9
  386.    SCREEN 1
  387.    SCREEN 2,1  ;down
  388.    PERFORM delay
  389. *********************************output of fields keyword only
  390.    SCREEN 1,2
  391.    SCREEN 2
  392.    :color=ruby+64
  393.    COLOR ruby+64 10 20 23 78
  394.    WINDOW 10,20,23,78 double
  395.    TEXT .13
  396.    SCREEN 2,1
  397.    SCREEN 1
  398.    PERFORM delay
  399. *********************************salary report specs
  400.    SCREEN 1,2
  401.    SCREEN 2
  402.    PERFORM fullerase
  403.    COLOR blue 0 0 24 79
  404.    :color=blue
  405.    WINDOW 1,1,14,68 double
  406.    TEXT .15
  407. *  SCREEN 2,1
  408.    SCREEN 1
  409.    delay2=1.5*delay
  410.    SCREEN 2,1  ;open
  411.    PERFORM delay
  412. *********************************salary report, page 1
  413.    SCREEN 1,2
  414.    SCREEN 2
  415.    :color=black+64
  416.    COLOR black+64 4 17 20 63
  417.    WINDOW 4,17,20,63 double
  418.    TEXT .18
  419.    SCREEN 2,1
  420.    SCREEN 1
  421.    delay2=1.5*delay
  422.    PERFORM delay
  423. *********************************salary report page 2
  424.    SCREEN 1,2
  425.    SCREEN 2
  426.    :color=red
  427.    COLOR red 6 31 24 79
  428.    WINDOW 7,32,23,78
  429.    TEXT .21
  430.    SCREEN 2,1
  431.    SCREEN 1
  432.    PERFORM delay
  433. *********************************intro relations, 2 subtotals
  434.    SCREEN 1,2
  435.    SCREEN 2
  436.    PERFORM fullerase
  437.    COLOR red 0 0 24 79
  438.    WINDOW 1,1,23,78 double
  439.    :color=red
  440.    TEXT .22
  441. *  SCREEN 2,1
  442.    SCREEN 1
  443.    delay2=1.5*delay
  444.    SCREEN 2,1 ;close
  445.    PERFORM delay
  446. *********************************sales rept, pg 1
  447.    SCREEN 1,2
  448.    SCREEN 2
  449.    :color=black+64
  450.    COLOR black+64 1 27 23 63
  451.    WINDOW 1,17,23,63
  452.    TEXT .27
  453.    SCREEN 2,1
  454.    SCREEN 1
  455.    delay2=1.5*delay
  456.    PERFORM delay
  457. *********************************sales rept, pg 2
  458.    SCREEN 1,2
  459.    SCREEN 2
  460.    :color=blue
  461.    COLOR blue 0 31 24 79
  462.    WINDOW 1,32,23,78
  463.    TEXT .30
  464.    SCREEN 2,1
  465.    SCREEN 1
  466.    delay2=1.5*delay
  467.    PERFORM delay
  468. ENDPROCEDURE reports
  469. *
  470. PROCEDURE menus
  471.    SCREEN 1,2
  472.    SCREEN 2
  473.    PERFORM fullerase
  474.    COLOR blue 0,0,24,79
  475.    CURSOR 2,0
  476.    GO#1 top
  477.    LIST#1 next 18 pic(custn'xx-xx-xx'),name,add:1 off
  478.    CURSOR 0,0
  479.    SET function off
  480.    TEXT
  481.    FIRST MENU        SECOND MENU       THIRD MENU        FOURTH MENU
  482.    ENDTEXT
  483.    go_up=t
  484.    count=0
  485.    menuset=1
  486.    lastset=0
  487.    SCREEN 2,3
  488.    DO WHILE t
  489.       IF menuset<>lastset
  490.          SCREEN 2
  491.          SCREEN 3,2
  492.          offset=(menuset-1)*18
  493.          COLOR b2[menuset]+64,1,offset+3,1,offset+14
  494.          :color=b2[menuset+2]+64
  495.          WINDOW 3,offset+3,4+menus[menuset,2],offset+23 double
  496.          :color=b2[menuset+4]
  497.          row1=menus[menuset,1]
  498.          TEXT .row1
  499.          SCREEN 2,1
  500.          SCREEN 1
  501.       ENDIF
  502.       IF menuchoice=1 .or. menuchoice=9
  503.          count=count+1
  504.          PERFORM switch
  505.          PERFORM delay3
  506.          IF count>8
  507.             BREAK
  508.          ENDIF
  509.          LOOP
  510.       ENDIF
  511.       :key=0
  512.       CURSOR 5,offset+3
  513.       ans=menu(menus[menuset,2],20)
  514.       RING
  515.       DO CASE
  516.       CASE :key=331 .and. menuset>1
  517.          menuset=menuset-1
  518.       CASE :key=333 .and. menuset<4
  519.          menuset=menuset+1
  520.       CASE :key=331
  521.          @ 22,5 say insert(blank(70),cen('No menu to left...try again',70),1)
  522.          PERFORM delay2
  523.          @ 22,5
  524.       CASE :key=333
  525.          @ 22,5 say insert(blank(70),cen('No menu to right...try again',70),1)
  526.          PERFORM delay2
  527.          @ 22,5
  528.       CASE ans=0
  529.          BREAK
  530.       OTHERWISE
  531.          @ 22,10 say str(ans,2)+' is what you have selected...it would now be performed'
  532.          PERFORM delay2
  533.          @ 22,0
  534.       ENDCASE
  535.    ENDDO
  536.    menuset=1
  537.    SET function on
  538. ENDPROCEDURE menus
  539. *
  540. PROCEDURE switch
  541.    limit=menus[menuset,2]
  542.    menuch2=mod(count,limit)+1
  543.    COLOR b2[mod(count,10)+1],menuch2+4,offset+3,menuch2+4,offset+21
  544.    @ 22,10 say str(menuch2,2)+' is what has been selected...it would now be performed'
  545.    PERFORM delay2
  546.    @ 22,0
  547.    DO CASE
  548.    CASE go_up .and. menuset>3
  549.       go_up=f
  550.       menuset=3
  551.    CASE go_up
  552.       menuset=menuset+1
  553.    CASE .not. go_up .and. menuset<2
  554.       menuset=2
  555.       go_up=t
  556.    CASE .not. go_up
  557.       menuset=menuset-1
  558.    ENDCASE
  559. ENDPROCEDURE switch
  560. *
  561. *PROCEDURE files
  562. *   DO DEMODISP
  563. *ENDPROCEDURE files
  564. *
  565. PROCEDURE speed
  566. *  PERFORM fullerase
  567. *  COLOR white 0 0 24 79
  568. *  :color=white
  569. *  ERASE 10,11
  570. *  @ 1,0 say date(4)
  571. *  :color=bold
  572. *  @ 3,0 say cen('COMPARING 4 DATABASE LANGUAGES',75)
  573. *  :color=ruby
  574. *  @ 4,0 say cen("Number of records that can be indexed in THREE minutes",70)
  575. *  PERFORM delay3
  576. *  :color=white
  577. *  BOX 7 5 7 75
  578. *  BOX 10 5 10 75
  579. *  BOX 13 5 13 75
  580. *  BOX 16 5 16 75
  581. *  BOX 19 5 19 75
  582. *  BOX 4 5 19 5
  583. *  BOX 20 5 20 75
  584. *  @ 20,5 say chr(192)
  585. *  PERFORM delay3
  586. *  @ 7,0 say '20000'
  587. *  @ 10,0 say '15000'
  588. *  @ 13,0 say '10000'
  589. *  @ 16,0 say ' 5000'
  590. *  @ 19,0 say ' -0- '
  591. *  PERFORM delay3
  592. *  :color=yellow
  593. *  @ 21,10 say 'dBASE II'
  594. *  @ 21,25 say 'dBASE III'
  595. *  @ 21,40 say 'dBASE III+'
  596. *  :color=ruby
  597. *  @ 21,55 say 'VP-Info!'
  598. *  @ 24,80
  599. *  PERFORM delay2
  600. *  IF graphics
  601. *     COLOR 111 18 10 19 20
  602. *     PERFORM delay3
  603. *     COLOR  31 18 25 19 35
  604. *     PERFORM delay3
  605. *     COLOR  79 11 40 19 50
  606. *     PERFORM delay3
  607. *     COLOR  47  3 55 19 65
  608. *  ELSE
  609. *     BOX 18 10 19 20
  610. *     PERFORM delay3
  611. *     BOX 18 25 19 35
  612. *     PERFORM delay3
  613. *     BOX 11 40 19 50
  614. *     PERFORM delay3
  615. *     BOX  3 55 19 65
  616. *  ENDIF
  617. *  :color=gold
  618. *  @ 23,03 say 'Tested on IBM AT, key of 6, record of 7'
  619. *  :color=magenta
  620. *  PERFORM delay
  621.    PERFORM fullerase
  622.    WINDOW 9,10,14,69 double
  623.    COLOR blue+64 8 8 15 71
  624.    TEXT .43
  625.    PERFORM delay
  626.    pause=f
  627.    PERFORM features
  628.    IF graphics
  629.       PERFORM graphics
  630.    ENDIF
  631.    PERFORM menus
  632.    PERFORM reports
  633.    PERFORM screens
  634.    repeating=t
  635.    PERFORM features
  636.    repeating=f
  637.    PERFORM flash
  638.    PERFORM dates
  639.    pause=t
  640. ENDPROCEDURE speed
  641. *
  642. PROCEDURE fullerase
  643.    WINDOW
  644.    :color=0
  645.    ERASE
  646. ENDPROCEDURE fullerase
  647. *
  648. PROCEDURE delay
  649.    IF pause
  650.       IF menuchoice=1
  651.          RING
  652.          DELAY delay2
  653.       ELSE
  654.          @ 23,50 say 'Press spacebar'
  655.          RING
  656.          ok=inkey()
  657.          @ 23,50 say blank(15)
  658.       ENDIF
  659.       delay2=delay
  660.    ENDIF
  661. ENDPROCEDURE delay
  662. *
  663. PROCEDURE delay2
  664.    IF pause
  665.       RING
  666.       DELAY 2
  667.    ENDIF
  668. ENDPROCEDURE delay2
  669. *
  670. PROCEDURE delay3
  671.    IF pause
  672.       RING
  673.       DELAY 1
  674.    ENDIF
  675. ENDPROCEDURE delay3
  676. *
  677. PROCEDURE delay4
  678.    IF pause
  679.       RING
  680.       DELAY 1
  681.    ENDIF
  682. ENDPROCEDURE delay4
  683. *
  684. PROCEDURE delay5
  685.    IF pause
  686.       RING
  687.       DELAY .5
  688.    ENDIF
  689. ENDPROCEDURE delay5
  690. *
  691. *                    *** end of program DEMO.PRG ***
  692.